'''
给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。

你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。

 

示例 1：


输入：head = [1,2,3,4]
输出：[2,1,4,3]
示例 2：

输入：head = []
输出：[]
示例 3：

输入：head = [1]
输出：[1]

'''
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        virtual_node = ListNode(val = 0, next = head)
        if virtual_node.next != None and virtual_node.next.next != None:
            cur = virtual_node.next.next
            while(virtual_node.next != None and virtual_node.next.next != None):
                node1 = virtual_node.next
                node2 = virtual_node.next.next
                temp = node2.next
                virtual_node.next = node2
                node2.next = node1
                node1.next = temp
                virtual_node = node1
            return cur
        else:
            return head